https://leetcode.com/problems/break-a-palindrome/
你會得到一個字串palindrome
,該字串全是小寫字母且是回文
請在替換一個英文字母的情況把回文破壞掉,回傳字典順序最小的那組答案
如果替換一個英文字母沒辦法破壞回文的話,就回傳空字串
這題因為「替換掉一個英文字母」、「回傳字典順序最小的那組」的兩個條件,讓這題變得比較單純了點
首先,他的限制已經有說明所有的輸入都是回文,那就代表我們隨便改一個字都能破壞回文,不過為了要符合題目的條件,我們要把任一個字母改成'a'
才能符合「回傳字典順序最小的那組」
那我們就檢查前半部哪個的字母不是'a'
就好;如果前半部全都是'a'
,就把最後一個字改成'b'
class Solution:
def breakPalindrome(self, palindrome: str) -> str:
if len(palindrome) == 1: return ''
for i in range(len(palindrome) // 2):
if palindrome[i] != 'a':
return palindrome[:i] + 'a' + palindrome[i+1:]
return palindrome[:-1] + 'b'